package response

type PlanReportResponse struct {
	// 计划名
	PlanName string `json:"plan_name"`
	// 报告完成时间
	FinishDate string `json:"finish_date"`
	// 是否超时 1-是 2-否
	IsOverTime int64 `json:"is_over_time"`
	// 预计计划时长(天为单位)
	ExpectDay int64 `json:"expect_day"`
	// 实际计划时长(天为单位)
	RealDay int64 `json:"real_day"`
	// 任务数
	TaskTotal int64 `json:"task_total"`
}

type PlanResponse struct {
	PlanId     string `gorm:"primarykey" json:"plan_id"`                                   // 主键ID
	Name       string `json:"name" gorm:"type:varchar(20);not null;comment:计划名称"`          // 计划名称
	CreateDate string `json:"create_date" gorm:"type:varchar(10);not null;comment:创建时间"`   // 创建时间
	StartDate  string `json:"start_date" gorm:"type:varchar(10);not null;comment:开始时间"`    // 开始时间
	EndDate    string `json:"end_date" gorm:"type:varchar(10);not null;comment:结束时间"`      // 结束时间
	FinishDate string `json:"finish_date" gorm:"type:varchar(10);not null;comment:完成时间"`   // 完成时间
	UserId     string `json:"user_id" gorm:"type:varchar(36);not null;comment:用户id"`       // 用户id
	Property   string `json:"property" gorm:"type:varchar(10);not null;comment:计划标签 用于分析"` // 计划标签 用于分析
	ParentId   string `json:"parent_id" gorm:"type:varchar(36);not null;comment:上级计划主键id"` // 父计划的id
}

type PlanDetailResponse struct {
	PlanId string `gorm:"primarykey" json:"plan_id"`                   // 主键ID
	Target string `json:"target" gorm:"type:text;not null;comment:目标"` // 目标
}

type PlanPageResponse struct {
	PlanId      string              `gorm:"primarykey" json:"plan_id"`                                 // 主键ID
	Name        string              `json:"name" gorm:"type:varchar(20);not null;comment:计划名称"`        // 计划名称
	CreateDate  string              `json:"create_date" gorm:"type:varchar(10);not null;comment:创建时间"` // 创建时间
	StartDate   string              `json:"start_date" gorm:"type:varchar(10);not null;comment:开始时间"`  // 开始时间
	EndDate     string              `json:"end_date" gorm:"type:varchar(10);not null;comment:结束时间"`    // 结束时间
	FinishDate  string              `json:"finish_date"`                                               // 结束时间
	PlanStatus  int                 `json:"plan_status"`                                               // 计划状态 【1-已完成 2-未开始 3-进行中 4-超时】
	TodoTotal   int64               `json:"todo_total"`                                                // 计划中的待办数
	SurplusTime string              `json:"surplus_time"`                                              // 剩余时间
	Property    string              `json:"property"`                                                  // 计划标签 用于分析
	ParentId    string              `json:"parent_id" `                                                // 父计划的id
	Children    []*PlanPageResponse `json:"children"`                                                  // 子计划列表
}

type TaskItemResponse struct {
	TaskItemId string `json:"task_item_id" gorm:"primarykey"`                                    // 主键ID
	Content    string `json:"content" gorm:"type:text;not null;comment:待办内容"`                    // 待办内容
	TodoTaskId string `json:"todo_task_id" gorm:"type:varchar(36);not null;comment:关联待办主表"`      // 关联待办主表
	Level      int    `json:"level" gorm:"type:tinyint;not null;comment:优先级（四象限）"`               // 优先级（1-不重要且不紧急，2-紧急但不重要，3-重要但不紧急，4重要且紧急）
	PlanId     string `json:"plan_id" gorm:"type:varchar(36);not null;comment:关联计划表(0000代表公共池)"` // 关联计划表(0000代表公共池)
	FinishDate string `json:"finish_date" gorm:"type:varchar(10);not null;comment:完成日期"`         // 完成日期  默认0000-00-00
}

type TaskListResponse struct {
	TodoTaskId  string              `json:"todo_task_id"`                                               // 主键ID
	PlanId      string              `json:"plan_id"`                                                    // 计划ID
	Think       string              `json:"think" gorm:"type:text;not null;comment:每日感想"`               // 每日感想
	ExecuteDate string              `json:"execute_date" gorm:"type:varchar(36);not null;comment:执行时间"` // 执行时间
	TaskItems   []*TaskItemResponse `json:"task_items"`                                                 // 待办项列表
}

type QuestionResponse struct {
	QuestionId   string `gorm:"column:question_id;type:varchar(36);primary_key;comment:主键id" json:"question_id"`
	Question     string `gorm:"column:question;type:varchar(50);comment:问题;NOT NULL" json:"question"`
	Answer       string `gorm:"column:answer;type:text;comment:解答;NOT NULL" json:"answer"`
	PlanId       string `gorm:"column:plan_id;type:varchar(36);comment:计划id;NOT NULL" json:"plan_id"`
	UserId       string `gorm:"column:user_id;type:varchar(36);comment:用户id;NOT NULL" json:"user_id"`
	TodoTaskDate string `gorm:"column:todo_task_date;type:varchar(10);comment:对应待办日期;NOT NULL" json:"todo_task_date"`
}

type CompletionRateAnalysisResponse struct {
	TodoTaskDate   string `json:"todo_task_date"`
	CompletedNum   int32  `json:"completed_num"`
	UnCompletedNum int32  `json:"un_completed_num"`
}

type WeeklyDistributionAnalysisResponse struct {
	// 星期数
	WeekName string `json:"week_name"`
	// 值
	Value int32 `json:"value"`
}

type ReviewAnalysisResponse struct {
	// 上周待办完成数
	LastWeekFinishTotal int32 `json:"last_week_finish_total,omitempty"`
	// 本周待办完成数
	FinishTotal int32 `json:"finish_total,omitempty"`
	// 下周完成目标数
	NextWeekTargetFinishTotal int32 `json:"next_week_target_finish_total,omitempty"`
}
